from redis import Redis
# 引入mongodb
from pymongo import MongoClient
r = Redis(host="127.0.0.1",port="6379",db=1,decode_responses=True)
# 连接mongodb的re数据库
c = MongoClient(host="127.0.0.1",port=27017)

# 通过mongodb的re数据库中的dis集合
m = c["re"]["dis"]

# 插入{"张三":98,"李四":72,"王五":64}文档 insert_one
# m.delete_many({"张三":98})
if m.count_documents({"_id":1})==0:
    m.insert_one({"_id":1,"张三":98,"李四":72,"王五":64})
# 查询出以上文档的所有数据，然后将键存入redis的列表
data = list(m.find({"_id":1}))[0] # 返回的是0数组，我们只需要一条数据
print(data) # {'_id': 1, '张三': 98, '李四': 72, '王五': 64}
keys = list(data.keys())
keys.pop(0) # 去除_id
print(keys) #['张三', '李四', '王五']
r.delete("stu_list")
r.rpush("stu_list",*keys)

# 输出列表的人 查询出班级的人
stulist = r.lrange("stu_list",0,-1)
print(stulist) # ['张三', '李四', '王五']

# 将键存入redis的集合  
r.sadd("stu_set",*keys)
# 输出该集合 给三个人随机排序
stuset=r.smembers("stu_set") 
print(stuset) # {'张三', '王五', '李四'}

# 将键和值存入redis的有序集合
r.zadd("stu_zs",data)
# 对三个人的分数进行从大到小的排序
stuzs = r.zrevrange("stu_zs",0,-1,withscores=True)
stuzs.pop(-1)
print(stuzs) #[('张三', 98.0), ('李四', 72.0), ('王五', 64.0)]





